﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace iri10
{
    public partial class frmBuscarPedido : Form
    {
        public frmBuscarPedido()
        {
            InitializeComponent();
        }

        private void cargarPedido(Pedido p)
        {
            //TODO ver este index
            String []listaCliente = new String[6];

            //Costo
            lblPrecio.Text = "$ " + p.Pc.FPrecio.ToString();

            //cargo el número de pedido

            


            //cargo los datos del cliente
            listaCliente[0] = "Nombre: " + p.User.SNombre;
            listaCliente[1] = "Apellido: " + p.User.SApellido;
            listaCliente[2] = "DNI: " + p.User.DNI;
            listaCliente[3] = "Teléfono: " + p.User.STeléfono;
            listaCliente[4] = "E-Mail: " + p.User.SEMail;
            listaCliente[5] = "Fecha del pedido: " + p.Fecha.ToShortDateString();

            txtNombre.Text = p.SNombre;
            txtApellido.Text = p.SApellido;
            txtDni.Text = p.sDNI;
            txtTeléfono.Text = p.STelefono;
            txtCalle.Text = p.Direccion.Calle;
            txtCiudad.Text = p.Direccion.Ciudad;
            txtCp.Text = p.Direccion.CP.ToString();
            txtDepartamento.Text = p.Direccion.Departamento;
            txtNumero.Text = p.Direccion.Número.ToString();
            txtPais.Text = p.Direccion.País;
            txtPiso.Text = p.Direccion.Piso;
            txtProvincia.Text = p.Direccion.Provincia;

            lstCliente.Items.AddRange(listaCliente);

            //Cargo los componentes
            lstListaComponentes.Items.Add("Modelo de la PC: " + p.Pc.SModelo);
            lstListaComponentes.Items.AddRange(p.Pc.CompObligatorios);
            lstListaComponentes.Items.AddRange(p.Pc.CompModificable);
            lstListaComponentes.Items.AddRange(p.Pc.CompEliminable);

            //Forma de pago
            if(p.FormaDePago.CompareTo("Transferencia")==0)
                    radTransferencia.Checked = true;
            else
                if (p.FormaDePago.CompareTo("TarjetaCredito")==0)
                    radTarjetaCredito.Checked=true;
                else
                    radContado.Checked = true;

        }

        private void frmBuscarPedido_Load(object sender, EventArgs e)
        {
            lblError.Text = "";
        }


        private void frmBuscarPedido_Shown(object sender, EventArgs e)
        {
            //Final x=163  Y=58

            int oPos = -Height; //Escondido
            Point p = new Point(163,oPos);
            
            for (int iCont = 0; iCont <= 25;iCont++ )
            {
                p.Y = oPos - (oPos-58)/25 * iCont;
                Application.DoEvents();
                this.Location = p;
            }
        }

        private void txtNumeroPedido_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                picBuscar_Click(null, null);
                e.SuppressKeyPress = true;
            }
        }

        private void limpiar()
        {
            lstListaComponentes.Items.Clear();
            lstCliente.Items.Clear();

            txtApellido.Text = "";
            txtCalle.Text = "";
            txtCiudad.Text = "";
            txtCp.Text = "";
            txtDepartamento.Text = "";
            txtDni.Text = "";
            txtNombre.Text = "";
            txtNumero.Text = "";
            //txtNumeroPedido.Text = "";
            txtPais.Text = "";
            txtPiso.Text = "";
            txtProvincia.Text = "";
            txtTeléfono.Text = "";
              
        }

        private void picOk_Click(object sender, EventArgs e)
        {
            NegVentanas.finBuscarPedido();
        }

        private void picBuscar_Click(object sender, EventArgs e)
        {
            //Limpio el formulario
            
            lstCliente.Items.Clear();
            lstListaComponentes.Items.Clear();


            //El pedido existe?
            if (!validarNumeroPedido(txtNumeroPedido.Text))
            {
                lblError.Text = "Número Pedido incorrecto";
                limpiar();
                txtNumeroPedido.SelectAll();
                return;

            }
            
            uint id = UInt32.Parse(txtNumeroPedido.Text);

            Pedido p = NegPedido.getPedido(id);

            //El pedido existe?
            if (p == null)
            {
                lblError.Text = "El número de pedido es inexistente";
                limpiar();
                txtNumeroPedido.SelectAll();
                return;
            }
            else
                lblError.Text = "";

            //El pedido es del usuario acutal?
            if (usuarioActual.User.Id != p.User.Id)
            {
                lblError.Text = "El pedido corresponde a otro usuario";
                limpiar();
                txtNumeroPedido.SelectAll();
            }
            else
            {

                cargarPedido(p);
            }

        }

        private bool validarNumeroPedido(string p)
        {
            //Si es vacío, es incorrecto
            if (p.CompareTo("")==0)
                return false;

            for (int i = 0; i < p.Length; i++)
            {
                if (!char.IsDigit(p[i]))
                    return false;

            }

            return true;
        }

        private void frmBuscarPedido_FormClosing(object sender, FormClosingEventArgs e)
        {
            //Final x=163  Y=58

            Point p = new Point();
            p.X = 163;
            p.Y = Location.Y;

            for (int iCont = 25; iCont >= 0; iCont--)
            {
                p.Y -= (163 + this.Height) / 25;
                this.Location = p;
                Application.DoEvents();
            }
        }

    }
}
